#ifndef MAINWINDOW_02_H
#define MAINWINDOW_02_H

/*****************************************************************************************
  @Copyright  2020-2021
  @Date       2021-04-06
  @Author     qiaowei
  @Contact    weiweiqiao@126.com
  @Version    1.0
  @Brief      UI主窗口，接受用户操作，显示数据
  @Other      与MainWindow类同功能，根据UML内容，调整程序架构
  @History    None
  @Functions  None
******************************************************************************************/

#include <QMainWindow>
#include <QThread>

class QMenu;
class QAction;
class Ui_operate_manager_02;
class Track_data_table_model_02;
class Track_data_02;

namespace Ui {
class MainWindow_02;
}

class MainWindow_02 : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow_02(QWidget *parent = nullptr);
    ~MainWindow_02();

signals:
    /***************************************************************************
     @Date     2021-04-22
     @Author   qiaowei
     @Contact  weiweiqiao@126.com
     @Version  1.0
     @Brief    Send list to opened files
     @Param    file_name_list 文件名列表
    ***************************************************************************/
    void si_open_files(QStringList file_name_list);

    void si_split_files_content(QStringList file_name_list);

    void si_send_track_to_model(Track_data_02* data);

    void si_send_filter_to_process(QMap<QString, QVariant>* conditions);

private:
    /***************************************************************************
     @Date     2021-04-22
     @Author   qiaowei
     @Contact  weiweiqiao@126.com
     @Version  1.0
     @Brief    initialize widgets
    ***************************************************************************/
    void init_widgets();

    /***************************************************************************
     @Date     2021-04-22
     @Author   qiaowei
     @Contact  weiweiqiao@126.com
     @Version  1.0
     @Brief    initialize signal/slot
    ***************************************************************************/
    void init_connections();

private slots:
    /***************************************************************************
     @Date     2021-04-22
     @Author   qiaowei
     @Contact  weiweiqiao@126.com
     @Version  1.0
     @Brief    open files
    ***************************************************************************/
    void sl_open_files();

    /***************************************************************************
     @Date     2021-04-24
     @Author   qiaowei
     @Contact  weiweiqiao@126.com
     @Version  1.0
     @Brief    None
    ***************************************************************************/
    void sl_split_files_content();

    /***************************************************************************
     @Date     2021-04-25
     @Author   qiaowei
     @Contact  weiweiqiao@126.com
     @Version  1.0
     @Brief    Get filter conditions, including call sign, ssr, min altitude,
               max altitude
    ***************************************************************************/
    void sl_filter_conditions();

    void sl_hide_row(int row);

    void sl_test(int row, bool flag);

    void sl_test01(int row, bool flag);

    void sl_set_row_hidden(int row, bool flag);

private:
    Ui::MainWindow_02 *ui;

    QMenu* file_menu_;
    QAction* open_file_action_;
    QAction* split_data_action_;
    QAction* exit_action_;

    /***************************************************************************
     @Date     2021-04-24
     @Author   qiaowei
     @Contact  weiweiqiao@126.com
     @Version  1.0
     @Brief    UI操作类，根据用户操作，将操作传递给不同函数处理
    ***************************************************************************/
    Ui_operate_manager_02* manager_;

    /***************************************************************************
     @Date     2021-04-24
     @Author   qiaowei
     @Contact  weiweiqiao@126.com
     @Version  1.0
     @Brief    模型类，保存数据
    ***************************************************************************/
    Track_data_table_model_02* model_;

    QThread model_thread_;
};

#endif // MAINWINDOW_02_H
